package com.operator.Activitys.activity;

import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.operator.Activitys.R;
import com.operator.Activitys.activity.base.BaseActivity;
import com.operator.Activitys.adapter.PictureAdapter;
import com.operator.Activitys.utils.Constant;
import com.operator.Activitys.view.PictureViewPager;
import com.zhy.autolayout.AutoRelativeLayout;

import org.simple.eventbus.EventBus;

import java.util.List;

import butterknife.Bind;
import butterknife.OnClick;

/**
 * 项目名称：金泽云 手机app
 * 类描述：查看图片 缩略图 页面
 * 创建人：张飞祥
 * 创建时间：2018/5/24 16:25
 * 修改人：张飞祥
 * 修改时间：2018/5/24 16:25
 * 修改备注：
 */
public class ViewPictureActivity extends BaseActivity implements PictureViewPager.OnPageChangeListener {

    //返回按钮
    @Bind(R.id.iv_return)
    ImageView ivReturn;
    //标题
    @Bind(R.id.tv_title)
    TextView tvTitle;
    //功能键
    @Bind(R.id.iv_function)
    ImageView ivFunction;
    //标题总布局
    @Bind(R.id.app_bar_layout)
    AutoRelativeLayout appBarLayout;
    //图片滑动切换视图
    @Bind(R.id.vp_picture)
    PictureViewPager vpPicture;

    //获取传递 图片 是否可以删除 （false：不可以删除、true：可以删除）
    private boolean mDeleteTag;
    //获取传递 图片 标志位
    private int mPos = 0;
    //获取传递 图片 路径
    private List<String> mPaths = null;
    //获取传递 图片加载方式
    private String mPictureLoadTag = null;


    //图片加载适配器
    private PictureAdapter mAdapter = null;
    //获取 当前集合 大小
    private int mPictureSize = 0;
    //提示弹窗
    private MaterialDialog mMsgDialog;

    @Override
    protected void initUI() {
        setContentView(R.layout.act_view_picture);
        //设置状态栏为透明
        setThemeTransparent();
        //TODO  获取从上个页面传递过来的实体数据
        Bundle bundle = this.getIntent().getExtras();
        //非空判断
        if (bundle != null) {
            //获取 获取 图片数据
            mDeleteTag = bundle.getBoolean(Constant.INTENT_IMAGE_DELETE_TAG);
            //获取 获取 图片标志位
            mPos = bundle.getInt(Constant.INTENT_IMAGE_POS);
            //获取 获取 图片路径 集合
            mPaths = bundle.getStringArrayList(Constant.INTENT_IMAGE_URL_LIST);
            //获取 获取 图片加载 方式
            mPictureLoadTag = bundle.getString(Constant.INTENT_IMAGE_LOAD_TAG);

            //TODO 判断 是否 需要显示 删除按钮
            if (mDeleteTag) {
                //显示功能按钮
                ivFunction.setVisibility(View.VISIBLE);
                //显示功能按钮 文字
                ivFunction.setImageResource(R.drawable.ic_delete);
            }
        }

        //显示返回按钮
        ivReturn.setVisibility(View.VISIBLE);
        //设置状态栏 背景颜色
        appBarLayout.setBackgroundResource(R.color.color_text_black);
    }

    @Override
    protected void initData() {
        //加载图片
        mAdapter = new PictureAdapter(this,mPaths,mPictureLoadTag) {
            @Override
            public void setItemOnClickListener(int position) {
            }
        };
        //加载图片适配器
        vpPicture.setAdapter(mAdapter);
        //设置 ViewPager 初始显示位置
        vpPicture.setCurrentItem(mPos);

        //获取当前 List 大小
        mPictureSize = mPaths.size();

        //TODO 动态设置标题
        if (mPictureSize > 1)
            tvTitle.setText((mPos+1)+"/"+mPictureSize);
        else
            tvTitle.setText("图片预览");

        /**
         * ViewPager 滑动事件
         */
        //滑动事件监听
        vpPicture.setOnPageChangeListener(this);
    }


    /**
     * 按钮点击事件
     */
    @OnClick({R.id.iv_return, R.id.iv_function})
    public void onBtnClick(View v) {
        switch (v.getId()) {

            case R.id.iv_return:            //返回
                finish();
                break;

            case R.id.iv_function:          //图片删除事件
                //提示 dialog
                mMsgDialog = new MaterialDialog.Builder(this)
                        .title("删除")
                        .titleColor(Color.parseColor("#ff0000"))
                        .content("确认删除这张图片嘛？")
                        .negativeText("取消")
                        .negativeColor(Color.parseColor("#cccccc"))
                        .positiveText("立即删除")
                        .positiveColor(Color.parseColor("#ff0000"))
                        .onPositive(new MaterialDialog.SingleButtonCallback() {
                            @Override
                            public void onClick(MaterialDialog dialog, DialogAction which) {
                                //删除当前页面 某一个图片
                                setDeletePicture(mPos);
                                //TODO 发送 事件通知 告知 已经删除 列表中 某一个图片
                                EventBus.getDefault().post(mPos, Constant.BUS_DELETE_ITEM_IMG);
                            }
                        }).show();
                // 设置点击屏幕Dialog不消失
                mMsgDialog.setCanceledOnTouchOutside(false);
                //取消Back键监听
                mMsgDialog.setCancelable(false);
                break;
        }
    }

    /**
     * 删除 某一张图片
     */
    private void setDeletePicture(int position){
        //清除数据源 某一个图片
        mPaths.remove(position);
        //刷新 adapter
        mAdapter.notifyDataSetChanged();
        //设置 ViewPager 显示位置
        vpPicture.setCurrentItem(mPos);
        //获取当前 List 大小
        mPictureSize = mPaths.size();

        /**
         * 动态判断 当前视图中 是否存在图片
         * true： 则可以继续删除
         * false：不可以删除，直接退出
         */
        if (mPictureSize>0)
            //设置标题
            tvTitle.setText((mPos+1)+"/"+mPictureSize);
        else
            finish();
    }

    /**
     * ViewPager 滑动事件 监听
     * @param position
     * @param positionOffset
     * @param positionOffsetPixels
     */
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    }
    @Override
    public void onPageSelected(int position) {
        //设置当前 图片 position
        mPos = position;
        //设置标题
        tvTitle.setText((position+1)+"/"+mPictureSize);
    }
    @Override
    public void onPageScrollStateChanged(int state) {
    }
}
